import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Servidor {

    public static void main(String[] args) {

        ServerSocket    s;  //Socket servidor
        Socket      sc;      //Socket cliente

        PrintStream     p;    //Canal de escritura
        BufferedReader  b;      //Canal de Lectura
        
        String    mensaje;
        
        try {
            //Creo el socket server
            s = new ServerSocket(9999);
            
            //Invoco el metodo accept del socket servidor, me devuelve una referencia al socket cliente
            sc = s.accept(); 
            
            //Obtengo una referencia a los canales de escritura y lectura del socket cliente
            b = new BufferedReader( new InputStreamReader ( sc.getInputStream() ) );
            p = new PrintStream   ( sc.getOutputStream() );
            long tiempoInicio,tiempoEjecucion, contadorBytes=0;
            float average;
            tiempoInicio = System.currentTimeMillis();
            
            while ( true ) {
            	
                //Leo lo que escribio el socket cliente en el canal de lectura
                mensaje = b.readLine();
                contadorBytes+=mensaje.length();
                
                System.out.println(mensaje);
                
                //Escribo en canal de escritura el mismo mensaje recibido
                //p.println(mensaje);
                
                //tiempoEjecucion = System.currentTimeMillis() - tiempoInicio;
                
                //average = (float)(contadorBytes / (float)(tiempoEjecucion/1000));
                
                //System.out.println("tiempo ejecucion= "+tiempoEjecucion/1000);
                
                //System.out.println("bytes= "+contadorBytes);
                
                //System.out.println(average+" bytes/s");

                if ( mensaje.equals("by")) {
                   break;
                }
            }
            System.out.println("");
            System.out.println("");
            System.out.println("");
            tiempoEjecucion = System.currentTimeMillis() - tiempoInicio;
            
            average = (float)(contadorBytes / (float)(tiempoEjecucion/1000));
            
            System.out.println("tiempo ejecucion= "+tiempoEjecucion/1000);
            
            System.out.println("bytes= "+contadorBytes);
            
            System.out.println(average+"bytes/s");
            
            p.close();
            b.close();
            
            sc.close();
            s.close();
        } catch (IOException e) {
            System.out.println("No puedo crear el socket");
        }
    }

}